package com.example.demo.domain.repository;


import com.baidubce.services.billing.model.order.Fee;
import com.example.demo.domain.Feedback;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @program: demo
 * @description: 关于用户体验反馈的数据库操作
 * @author: wangze
 * @create: 2020-04-26 17:47
 **/
public interface FeedbackRepository extends JpaRepository<Feedback,Integer> {

    /**
    * @Description: 获取全部未处理反馈
    * @Param:  无
    * @return:  未处理反馈列表
    * @Author: wangze
    */
    List<Feedback> findByStateIsFalseAndWorkNumberContainingOrStateIsFalseAndTextContainingOrderByDateAsc(String keyword1,String keyword2);

    /**
     * @Description: 根据工号搜索未处理反馈
     * @Param:  workNumber: 职工工号
     * @return:  未处理反馈列表
     * @Author: wangze
     */
    List<Feedback> findByStateIsFalseAndWorkNumberContainingOrderByDateAsc(String workNumber);

    /**
     * @Description: 根据反馈内容搜索未处理反馈
     * @Param:  text: 反馈内容
     * @return:  未处理反馈列表
     * @Author: wangze
     */
    List<Feedback> findByStateIsFalseAndTextContainingOrderByDateAsc(String text);

    /**
    * @Description: 获取全部已处理反馈
    * @Param:  无
    * @return:  已处理反馈列表
    * @Author: wangze
    */
    List<Feedback> findByStateIsTrueAndWorkNumberContainingOrStateIsTrueAndTextContainingOrderByDateAsc(String keyword1,String keyword2);

    /**
     * @Description: 根据工号搜索已处理反馈
     * @Param:  workNumber: 职工工号
     * @return:  已处理反馈列表
     * @Author: wangze
     */
    List<Feedback> findByStateIsTrueAndWorkNumberContainingOrderByDateAsc(String workNumber);

    /**
     * @Description: 根据反馈内容搜索已处理反馈
     * @Param:  text: 反馈内容
     * @return:  已处理反馈列表
     * @Author: wangze
     */
    List<Feedback> findByStateIsTrueAndTextContainingOrderByDateAsc(String text);

    /**
     * @Description: 根据反馈ID删除反馈
     * @Param:  id: 反馈ID
     * @return:  无
     * @Author: wangze
     */
    @Transactional
    @Modifying
    void deleteFeedbackById(Integer id);

    /**
     * @Description: 根据反馈ID查找反馈
     * @Param:  id: 反馈ID
     * @return:  反馈实体
     * @Author: wangze
     */
    Feedback findFeedbackById(Integer id);

}
